home *** CD-ROM | disk | FTP | other *** search
- Path: watnews.watson.ibm.com!ncohen
- From: ncohen@watson.ibm.com (Norman H. Cohen)
- Newsgroups: comp.lang.ada,comp.lang.c++
- Subject: Re: on OO differnces between Ada95 and C++
- Date: 22 Feb 1996 14:32:10 GMT
- Organization: IBM T.J. Watson Research Center
- Distribution: world
- Message-ID: <4ghupa$10f5@watnews1.watson.ibm.com>
- References: <4gbq7q$g08@qualcomm.com> <4gdidj$10f5@watnews1.watson.ibm.com> <4gg6da$8jk@wdl1.wdl.loral.com>
- Reply-To: ncohen@watson.ibm.com
- NNTP-Posting-Host: rios8.watson.ibm.com
-
- In article <4gg6da$8jk@wdl1.wdl.loral.com>, mab@dst17.wdl.loral.com
- (Mark A Biggar) writes:
-
- |> Given the above example, is the following code legal, I have been unable to
- |> determine if it is from the RM95:
- |>
- |> with Parent.Child;
- |> package My_Package is
- |>
- |> A: Parent.Child.Auxiliary_Type; -- or must I say A: Parent.Auxiliary_Type
- |>
- |> end My_Package;
-
- No, it is illegal. The effect of the with clause is as if you were
- compiling My_Package in the following context:
-
- package Parent is
- ...
- type Auxiliary_Type is ...;
- ...
- package Child is
- ...
- end Child;
- end Parent;
-
- package My_Package is
- ...
- end My_Package;
-
- so you must say Parent.Auxiliary_Type.
-
- |> If the above is illegal then it presents a problem if I have a library
- |> level renaming of Parent.Child, like so:
- |>
- |> package My_Child renames Parent.Child;
- |>
- |> with My_Child;
- |> package Foo is
- |>
- |> A: My_Child.Auxiliary_Type; -- LEGAL?
- |>
- |> end Foo;
-
- Not legal, and there is no way to name Auxiliary_Type inside Foo, because
- Parent is not visible there. (AARM 10.1.2(9.b)) If you want to name an
- entity exported by Parent (and not reexported), the name Parent must
- appear in the with clause (possibly as a prefix). This makes you write a
- slightly longer with clause, but it is a very helpful property for
- program readers trying to determine the origin of an entity named in Foo.
-
- |> If this type of naming is legal then there is a simple emulation of
- |> Norman's multi-part package proposal using child packages and a library
- |> level rename.
-
- It's not, but in any event my proposal allows a public part of a package
- to refer to entities declared in an earlier private part of the package,
- while still allowing the public part to be mentioned anywhere in a with
- clause. You can't do that with public and private children, because of
- restrictions on where you can name private children in a with clause.
-
- --
- Norman H. Cohen ncohen@watson.ibm.com
-